//
// Created by yqj on 2025/2/13.
//

#include <cstring>
#include <cstdio>
#include "freertos/FreeRTOS.h"
#include "driver/gpio.h"
#include "button.hpp"

// 定义计数变量
uint32_t button_press_count = 0;
void exit_gpio_isr_handler(void *arg) {
    uint32_t io = (uint32_t) arg;
    if (io == BUTTON_GPIO_PIN) {
         button_press_count++;
    }
}

void button_init() {
    // 初始化 GPIO 配置
    gpio_config_t io_conf = { 0 };

    io_conf.intr_type = GPIO_INTR_NEGEDGE;

    // 设置为输入模式
    io_conf.mode = GPIO_MODE_INPUT;
    // 使能上拉电阻
    io_conf.pull_up_en = GPIO_PULLUP_ENABLE;

    io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;

    // 指定 GPIO 引脚
    io_conf.pin_bit_mask = (1ULL << BUTTON_GPIO_PIN);
    // 配置 GPIO
    gpio_config(&io_conf);

    gpio_install_isr_service(ESP_INTR_FLAG_EDGE);
    gpio_isr_handler_add(BUTTON_GPIO_PIN, exit_gpio_isr_handler, (void *) BUTTON_GPIO_PIN);
    gpio_intr_enable(BUTTON_GPIO_PIN);
}